//
// Description: 128. 最长连续序列
// Created by Loading on 2025/4/13.
//

#include <bits/stdc++.h>

using namespace std;

int longestConsecutive(vector<int> &nums) {
    unordered_set<int> s(nums.begin(), nums.end());

    int res = 0;
    for (auto &x : s) {
        // 若哈希中存在x-1，那么需要使用从x-1开始计算的结果
        if (!s.count(x - 1)) {
            int len = 0;
            int num = x;
            // 连续元素存在，长度+1
            while (s.count(num)) {
                ++len;
                ++num;
            }
            // 更新最大长度
            res = max(len, res);
        }
    }

    return res;
}

int main() {
    vector<int> nums{0, 3, 7, 2, 5, 8, 4, 6, 0, 1};

    auto res = longestConsecutive(nums);

    cout << res << endl;

    return 0;
}
